package mc.dao;

import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Example;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import mc.domain.Usluga;

public class UslugaManagerDAOHb extends HibernateDaoSupport implements IUslugaManagerDAO {

	public List getAllUslugi() {
		return getHibernateTemplate().find("from Usluga");
		
	}

	public Usluga getUslugaById(int id) {
		return (Usluga) getHibernateTemplate().get(Usluga.class, new Integer(id));
	}

	public void saveUsluga(Usluga usluga) {
		getHibernateTemplate().saveOrUpdate(usluga);

	}

	public void deleteUsluga(Usluga usluga) {
		getHibernateTemplate().delete(usluga);
		
	}

	/**
	 * Metoda wybiera uslugi wedlug podanego przykladu. <code> excludeZeroes() </code> powoduje
	 * pominiecie wszystkich pustych pol (nie podaje dodatkowych warunkow dla where przy select'ie)
	 */
	public List getUslugaByExample(Usluga u) {

//		Session sesja=getSession();
//		Criteria crit=sesja.createCriteria(Usluga.class);
//		crit.add(Example.create(u).excludeZeroes());
//		sesja.beginTransaction();
//		List l=crit.list();
//		sesja.close();
//		return l;
		return getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(Usluga.class).add(
					Example.create(u).excludeZeroes()));
		 
 	}

	public void deleteUsluga(int id) {
		getHibernateTemplate().bulkUpdate("delete from Usluga where id=?", id);
		
	}

}
